mongo

您所在的位置:网站首页 mongodb date类型 mongo

mongo

2023-11-22 03:13| 来源: 网络整理| 查看: 265

mongo-日期类型(2)

时间格式2020-01-13T16:00:00.000Z中的T和Z

T表示分隔符,Z表示的是UTC。

UTC:世界标准时间,在标准时间上加上8小时,即东八区时间,也就是北京时间。

举例

北京时间:2020-01-14 00:00:00对应的国际标准时间格式为:2020-01-13T16:00:00.000Z

1、当通过mongo shell来插入日期类型数据时,使用new Date()和使用Date()是不一样的:

2、我们看:使用new Date(),插入的是一个isodate类型;而使用Date()插入的是一个字符串类型。

那isodate是什么日期类型的?我们看这2个值,它比字符串大概少了8小时。 这是由于mongo中的date类型以UTC(Coordinated Universal Time)存储,就等于GMT(格林尼治标准时)时间。 而我当前所处的是+8区,所以mongo shell会将当前的GMT+0800时间减去8,存储成GMT时间。

3、如果通过get函数来获取,那么mongo会自动转换成当前时区的时间:

demo一: db.createCollection("test_date") db.test_date.insert({mark:1, mark_time:ISODate("2021-03-12T01:11:57.943Z")}) db.test_date.insert({mark:2, mark_time:ISODate("2021-03-12T02:11:57.943Z")}) db.test_date.insert({mark:3, mark_time:ISODate("2021-03-12T03:11:57.943Z")}) db.test_date.insert({mark:4, mark_time:ISODate("2021-03-12T04:11:57.943Z")}) db.test_date.insert({mark:5, mark_time:ISODate("2021-03-12T05:11:57.943Z")}) db.test_date.insert({mark:6, mark_time:ISODate("2021-03-12T06:11:57.943Z")}) db.test_date.find({mark_time:{$lt: new Date('2021-03-12 12:11:57')}}) # 数据库存储的格式为ISODate,此时等价于 db.test_date.find({mark_time:{$lt: ISODate('2021-03-12T04:11:57.943Z')}}) db.test_date.find({mark_time:{$gte: new Date('2021-03-12 12:11:57')}}) # 数据库存储的格式为ISODate,此时等价于 db.test_date.find({mark_time:{$gte: ISODate('2021-03-12T04:11:57.943Z')}}) # db.test_date.find({mark_time:{ $gt: ISODate('2000-01-01T00:00:00.000Z'), $lt: ISODate('2100-01-01T00:00:00.000Z')}}) demo 二: # 创建表 > db.createCollection("test_date") { "ok" : 1 } # 插入数据 # 国际时间 (推荐) > db.test_date.insert({mark:1, mark_time:new Date()}) # 北京时间 > db.test_date.insert({mark:2, mark_time:Date()}) # 查询 > db.test_date.find() { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } { "_id" : ObjectId("604ace485c4ea57ac80d7667"), "mark" : 2, "mark_time" : "Fri Mar 12 2021 10:13:28 GMT+0800 (CST)" } # 2021/03/12 10:11:57 和 2021/03/12 10:13:28 > > > db.test_date.findOne({mark:1}) { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } > > > db.test_date.findOne({mark:1}).mark_time ISODate("2021-03-12T02:11:57.943Z") > > > x=db.test_date.findOne({mark:1}).mark_time ISODate("2021-03-12T02:11:57.943Z") > > > x.getFullYear() 2021 > > x.getMonth() # js中的月份是从0开始的(0-11) 2 > x.getMonth()+1 3 > x.getDate() 12 > x.getHours() #注意这里获取到的小时是10,而不是2 10 > x.getMinutes() 11 > x.getSeconds() 57 > > > # ISO的日期类型可以直接使用new Date来进行比较,直接使用+8后的时间即可(注意字符串使用“/”分隔符也可): # 北京时间格式查询 > db.test_date.find({mark_time:{$gt: new Date('2021-03-12 10:11:57')}}) { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } > > db.test_date.find({mark_time:{$gt: new Date('2020-03-12 10:11:57')}}) { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } > > # 国际时间格式查询 > db.test_date.find({mark_time:{$gt: ISODate('2000-01-01T00:00:00.000Z'), $lt: ISODate('2100-01-01T00:00:00.000Z')}}) { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } # 北京/国际时间格式查询,发现都查询不到 存储的北京时间item > # 采用如下方法,只能查询北京时间,不能查到存储的国际时间item > db.test_date.find({"mark_time":{$gt:"2000-01-01 00:00:00"}}) { "_id" : ObjectId("604ace485c4ea57ac80d7667"), "mark" : 2, "mark_time" : "Fri Mar 12 2021 10:13:28 GMT+0800 (CST)" } > > > db.test_date.insert({mark:3, mark_time:ISODate()}) WriteResult({ "nInserted" : 1 }) > > > > db.test_date.find() { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } { "_id" : ObjectId("604ace485c4ea57ac80d7667"), "mark" : 2, "mark_time" : "Fri Mar 12 2021 10:13:28 GMT+0800 (CST)" } { "_id" : ObjectId("604ae05829d541273f368200"), "mark" : 3, "mark_time" : ISODate("2021-03-12T03:30:32.736Z") } > > > > db.test_date.find({"mark_time":{$gt:"2000-01-01 00:00:00"}}) { "_id" : ObjectId("604ace485c4ea57ac80d7667"), "mark" : 2, "mark_time" : "Fri Mar 12 2021 10:13:28 GMT+0800 (CST)" } > > > db.test_date.find({mark_time:{$gt: new Date('2020-03-12 10:11:57')}}) { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } { "_id" : ObjectId("604ae05829d541273f368200"), "mark" : 3, "mark_time" : ISODate("2021-03-12T03:30:32.736Z") } > > > > db.test_date.find({mark_time:{$gt: ISODate('2020-03-12 10:11:57')}}) { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } { "_id" : ObjectId("604ae05829d541273f368200"), "mark" : 3, "mark_time" : ISODate("2021-03-12T03:30:32.736Z") } > > > > > > db.test_date.find({mark_time:{$gte: ISODate('2000-01-01T00:00:00.000Z'), $lt: ISODate('2100-01-01T00:00:00.000Z')}}) { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } { "_id" : ObjectId("604ae05829d541273f368200"), "mark" : 3, "mark_time" : ISODate("2021-03-12T03:30:32.736Z") } > > > > db.test_date.find({mark_time:{$gte: new Date('2000-01-01T00:00:00.000Z'), $lt: ISODate('2100-01-01T00:00:00.000Z')}}) { "_id" : ObjectId("604acded5c4ea57ac80d7666"), "mark" : 1, "mark_time" : ISODate("2021-03-12T02:11:57.943Z") } { "_id" : ObjectId("604ae05829d541273f368200"), "mark" : 3, "mark_time" : ISODate("2021-03-12T03:30:32.736Z") } > >


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3